// package_01/pages/my-location/index.js

// 获取应用实例
const app = getApp()

//新增
// 引入SDK核心类，根据自己放的路径来写这个SDK核心类的位置
var QQMapWX = require('../../../qqmap-wx-jssdk.js');

//新增
// 实例化API核心类
var qqmapsdk = new QQMapWX({
  key: 'VTBBZ-4OR3I-3BAG3-U4KZT-THV67-DEBZX' // 必填，填自己在腾讯位置服务申请的key
});


Page({

  /**
   * 页面的初始数据
   */
  data: {
    detail: ''
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    const that = this
    // return
    // 开启小程序进入前台时接收位置消息。
    wx.startLocationUpdate({
      success: res => {
        console.log(res);
      }
    })


    this._locationChangeFn = function(res) {
    //   console.log('location change', res)
    //   that.inverseAddressMiniProRes(res).then(addressRes => {
    //     console.log('location', addressRes);
    //     if (addressRes.status == 0) {
    //         // 从返回值中提取需要的业务地理信息数据 国家、省、市、县区、街
    //         that.setData({
    //           // detail: addressRes.result.address_component.city
    //           detail: addressRes.result.address
    //         });
    //       }
    //   }).catch(err => console.log(err))

      that.inverseAddressWxRequestRes(res).then(addressRes => {
        console.log(addressRes);
        if (addressRes.status == 0) {
            // 从返回值中提取需要的业务地理信息数据 国家、省、市、县区、街
            that.setData({
              // detail: addressRes.result.address_component.city
              detail: addressRes.result.address
            });
          }
      }).catch(err => console.log(err))
     }
     wx.onLocationChange(this._locationChangeFn)

  },


  getLocation(){
    // 打开POI列表选择位置，支持模糊定位（精确到市）和精确定位混选。
    wx.choosePoi({
      success: res => {
        console.log(res);
        const {type, name, address} = res
        this.setData({
          detail: address + name
        })
      },
      fail: err => {
        console.log(err);
      }
    })
    return
    wx.getLocation({
      type: 'wgs84',
      success: (res) => {
        console.log(res);
        const latitude = res.latitude
        const longitude = res.longitude
        const speed = res.speed
        const accuracy = res.accuracy
        wx.chooseLocation({
          latitude,
          longitude,
          success: locationRes => {
            console.log(locationRes);
            this.setData({
              detail: locationRes.address
            })
          }
        })
      }
    })
  },

  // 逆地址解析
  inverseAddressMiniProRes(location){
    return new Promise((resolve, reject) => {
      qqmapsdk.reverseGeocoder({
        location: {
          latitude: location.latitude,
          longitude: location.longitude
        },
        success: res => {
          resolve(res);
          // if (res.status == 0) {
          //   // 从返回值中提取需要的业务地理信息数据 国家、省、市、县区、街
          //   this.setData({
          //     detail: res.result.address_component.city
          //     // detail: res.result.address
          //   });
          // }
        },
        fail: function(error) {
          reject(error);
          wx.showToast({
            title: "地址解析失败",
            icon: "none",
          })
        },
      })
    })
  },
  // 使用request进行解析
  inverseAddressWxRequestRes(location){
    /**
     * 1、使用逆地址解析
     * GET请求示例，注意参数值要进行URL编码
     * https://apis.map.qq.com/ws/geocoder/v1/?location=39.984154,116.307490&key=[你的key]&get_poi=1
     * 经纬度（GCJ02坐标系），格式：location=lat<纬度>,lng<经度>
     */
    return new Promise((resolve, reject) => {
      wx.request({
        url: `https://apis.map.qq.com/ws/geocoder/v1/?location=${location.latitude},${location.longitude}&key=VTBBZ-4OR3I-3BAG3-U4KZT-THV67-DEBZX&get_poi=1`,
        header: {
          "Content-Type": "application/json",
        },
        data: {},
        method: "GET",
        success: (res) => {
          resolve(res.data);
          // if (res.statusCode == 200 && res.data.status == 0) {
          //   // 从返回值中提取需要的业务地理信息数据 国家、省、市、县区、街
          //   this.setData({
          //     // detail: res.data.result.address_component.city
          //     detail: res.data.result.address
          //   });
          // }
        },
        fail: (err) => {
          reject(err)
          wx.showToast({
            title: "地址解析失败",
            icon: "none",
          })
        },
      })
    })
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {
    wx.offLocationChange(this._locationChangeFn)
    wx.stopLocationUpdate({
      success: res => {
        console.log('stoploc');
        console.log(res);
      }
    })
  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})